The invention relates generally to multi-user applications executed over communication networks, and more specifically to an application interface for developing multi-user applications for distributed networks.
With the advent of wide area computer networks (WANs) and the Internet, various distributed client server computing models have been developed to facilitate the transmission of data among network nodes. The structure of the links among computers and sub-networks within a network is referred to as the infrastructure of the particular network or Internet. Each network has one or more principal links that connects primary nodes of the particular network by means of network xe2x80x9cbackbones.xe2x80x9d Network backbones are designed to carry a high volume of traffic between primary network nodes. Backbones are often defined in relation to the type of communications link used to transmit data along the backbone between nodes. Popular national network backbone link types include newer multicast protocols such as the Asynchronous Transfer Mode (ATM) and more conventional point-to-point links. The type of protocol or link used helps define the manner in which data is transmitted along the particular backbone. When data transmission occurs along a network backbone using a multicast protocol, information is sent directly after a brief setup time between sender and receiver. The data is therefore transferred along the most expeditious route across the network infrastructure to its destination. Data transmission occurring along a network backbone using a conventional point-to-point link, in contrast, requires routing over multiple point-to-point links between source and destination.
The volume of data transmitted across a network backbone is dependent on the bandwidth of the particular backbone. In computer networks, greater bandwidth indicates faster data transfer capability. Multiple data transmissions are sent along a network backbone using multiplexing techniques, whereby the volume of data transmission along the backbone is determined by the bandwidth of the particular link. Although a factor in all network communications, bandwidth limitations create particular problems in transmissions across national network backbones, regardless of the protocol or link used.
Because of the relative speed with which data is transmitted over network backbones and the relatively small amount of data transmitted in each data packet, latencies caused by network bandwidth limitations have not traditionally been a significant drawback in network operations. The advent of multi-user interactive applications, however, has made this a pressing issue.
A multi-user application is a computer program run on a computer system that allows multiple participants that are geographically dispersed to interact with the computer program and other users in an application environment, typically via communication links. For example, a multi-user application may be a video game that allows different, geographically dispersed participants to participate in the same game and compete against one another virtually in real time. Another example is a multi-user flight simulator or aircraft combat simulation that allows participants to pilot an aircraft within an airspace and to engage in combat with other participants in the same airspace. The frequency and extent to which users in a multi-user application interact with the computer program and other users is dependent on a variety of considerations. The considerations include the data transmission capacity of the relevant communication links between each user and the computer system, the nature of the application (whether it implicates data-intensive operations involving graphics or multimedia), and, to a lesser extent, the geographical proximity of each user to the computer system. If real-time interaction is required among users within the application environment, implicating data-intensive operations, the data transmission capacity of the communication links becomes especially critical.
Each application environment defines specific boundaries in which one or more participants may operate. In the above aircraft combat simulation example, the airspace in which the aircraft is piloted may be analogized to the application environment. Heretofore, to facilitate true interaction among participants within an application environment, complete information on every participant within a given environment needed to be transmitted to every other participant in that environment. When such complete information or data was sent via data packets over the network backbone, the bandwidth limitations discussed above either limited the number of participants or prohibited complex applications requiring real-time interaction among participants. The more complex the application, the greater the need for complete information about each participant. More information, in turn, results in larger data packets, which increases the burden on the network backbone. For these reasons, existing multi-user applications have been unable to achieve national interactivity among participants.
The backbone loading problems present a send/receive imbalance in any type of centrally administered multi-user application. In order for remote participants to remain aware of other participants, a central server will always be sending out a greater number of data packets than it receives. Existing multi-user applications have been generally unable to overcome bandwidth limitations throughout the network to provide for real-time, data intensive, interactive participation. The tradeoffs between the amount of data needed in each data packet and the number of participants across a particular network backbone have limited the ability of multi-user applications to achieve national participation where all participants are aware of all other relevant participants within their particular application environment. The greater the amount of data transmitted about each participant in a particular application environment, the fewer the number of participants able to participate. While sacrificing data to enable a greater number of participants has been used in existing systems, such solution is unworkable when seeking real-time interaction because limiting data either restricts participation to limited areas or prevents seamless participation within a given application environment. If inadequate or insufficient data is communicated to relevant participants in a multi-user application, participants will be unable to satisfactorily participate. The tradeoffs in data transfer and number of participants have limited the development of truly national-scale multi-user applications.
One solution to the problem of reducing bandwidth loading for multi-user applications operating over a communication network is described in U.S. Pat. No. 5,841,980, entitled xe2x80x9cDistributed System for Communication Networks in Multi-User Applicationsxe2x80x9d, assigned to the assignee of the present application and which is hereby incorporated by reference. This system divides the application environment of a multi-user application into different regions, and defines multiple zones of interest relative to an application environment and participants based on object type, position relative to the participant or pre-determined location, and priority. Only relevant data applicable to each participant within the given application environment is transmitted along the network backbone.
Application programming interfaces and application programs that utilize typical multi-user network systems typically require a significant amount of work to define nodes and other entities that use the network system. In such cases, there are often many unknowns related to the development of programs or applications that make use of the network architecture. Typically objects utilized by the multi-user applications are defined by a server and propagated to the clients. The object definitions must be recreated for each function or process within the client side applications that utilize the object. Moreover propagation of object updates is typically performed for all of the characteristics of the objects. Thus creation of objects for multi-user applications and the transmission of updated object data is relatively inefficient in present multi-user application development systems. What is needed, therefore, is a simplified development model for the development of interactive programs, games, and applications that utilize multi-user network engines.
An application interface and method for developing multi-user applications executable over a distributed network is described. An object definition structure is provided for client-based definition of objects utilized by a multi-user application. The object definition includes a plurality of characteristics associated with the object and utilized by the application to effect interaction with other clients over the distributed network. A broadcast schedule is associated with one or more of the plurality of characteristics and controls the transmission of object data from the creating client to other clients in the distributed network. During execution of the multi-user application, characteristics of the object are automatically updated periodically or upon the change of a characteristic relative to a preset threshold value, in accordance with values provided in the broadcast schedule. The object definition created by the client is used by all functions and processes within the multi-user application that utilize the object. One or more filter functions can be specified for limiting the propagation of the updated functional characteristics of the object to one or more of the other clients in the network.
Other objects, features, and advantages of the present invention will be apparent from the accompanying drawings and from the detailed description that follows below.